package main

import "fmt"

// BinaryFind 二分查找 - 前提是一个有序数组
func BinaryFind(arr *[]int, leftIndex int, rightIndex int, findVal int) {
	// 判断leftIndex 是否大于rightIndex 递归退出条件
	if leftIndex > rightIndex {
		fmt.Println("找不到")
		return
	}

	//先找到中间的下标
	middle := (leftIndex + rightIndex) / 2

	if (*arr)[middle] > findVal {
		// 说明我们要查找的数，应该在 leftIndex --- middle-1
		BinaryFind(arr, leftIndex, middle-1, findVal)
	} else if (*arr)[middle] < findVal {
		// 说明我们要查找的数，应该在 middle+1 --- rightIndex
		BinaryFind(arr, middle+1, rightIndex, findVal)
	} else {
		fmt.Println("找到了下标为：", middle)
	}
}
func main() {
	arr := []int{1, 8, 9, 10, 12, 15, 20}
	BinaryFind(&arr, 0, len(arr)-1, 9)
}
